Checkpointing is a fault olerance technique in computing systems. Checkpointing typically includes storing a snapshot of a current application or system state, for example, by copying memory to a secondary location to generate a memory version, and using the memory version at a later time for re-executing the application in the event of failure. For example, a calculation process may use checkpoints to store memory versions of calculated data at various points during the calculation process. In the event of an application or system failure, the calculation process can become corrupted and/or generate inconsistent results. To avoid having to restart the calculation process, the memory version corresponding to the latest checkpoint prior to application or system failure is restored, and the calculation process is continued from the restored checkpoint.